package com.loong.loong.hik.property.request.card;

import java.util.List;
import java.util.Map;
import lombok.Data;

/**
 * @author jinyiang
 * @date 2023/3/21 15:01
 */
@Data
public class CardAuthDownloadRequest {

	private Integer priority;

	private String callbackUrl;

	private List<ResourceInfo> resourceInfos;

	private List<PersonInfo> personInfos;

	private List<TemplateConfigInfo> templateConfigInfos;
	@Data
	public static class ResourceInfo {

		private String resourceIndexCode;   // 资源索引码

		private String resourceType;  // 资源类型

		private List<Integer> channelNos;   // 通道号列表

		private List<String> channelIndexCodes;   // 通道索引码列表
	}
	@Data
	public static class PersonInfo {

		private String personStatus;    // 人员状态

		private String personId;    // 人员唯一标识

		private String beginTime;   // 人员生效时间

		private String endTime; // 人员失效时间

		private String name;    // 人员姓名

		private String personType;  // 人员类型

		private String password;    // 人员密码

		private CardInfo cardInfo;  // 人员卡信息

		private FingerInfo fingerInfo;  // 人员指纹信息

		private FaceInfo faceInfo;  // 人员人脸信息

		private Map<String, String> personExtendData; // 人员扩展信息
	}
	@Data
	public static class CardInfo {

		private List<Card> cardList;
		@Data
		public static class Card {

			private String cardNo;   // 卡号

			private String cardType; // 卡类型

			private String cardStatus;   // 卡状态
		}
	}
	@Data
	public static class FingerInfo {

		private boolean deleteAllFinger;    // 是否清空指纹

		private String cardNo;  // 关联卡号

		private List<Finger> fingerList;    // 指纹列表
		@Data
		public static class Finger {

			private String fingerId;    // 指纹编号

			private String fingerData;  // 指纹数据
		}
	}
	@Data
	public static class FaceInfo {

		private boolean deleteAllFace;  // 是否清空人脸

		private String cardNo;  // 关联卡号

		private String storageNodeCode; // 存储节点编码

		private List<Face> faceList;    // 人脸列表
		@Data
		public static class Face {

			private String faceId;   // 人脸编号

			private String modelData;    // 模型数据

			private String picUrl;   // 图片地址
		}
	}
	@Data
	public static class TemplateConfigInfo {

		private Integer dimension;  // 模板维度

		private String templateId;  // 模板ID
	}

}
